iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0
Mobile Development

我的 Flutter 進化論:30 天打造「Crew Up!」的架構之旅系列 第 27

Day 27 - Cursor + Claude 實戰指南:從 Agent 到 Commit 的完整開發流程

  • 分享至 

  • xImage
  •  

大家好,歡迎來到第二十七天!在 Day 26,我們完成了 iOS 部署的完整自動化流程。今天,我們要分享在 Crew Up 專案開發過程中,如何運用 Cursor AI 編輯器的三大模式(AgentPlanAsk)來提升開發效率。

這篇文章不談理論,直接聚焦於實戰操作:如何用 Cursor 規劃功能、自動產生程式碼、產生 Commit Message,以及如何透過 Markdown 文件與 Claude AI 合作。

主要內容

  • Cursor 三大模式詳解:Agent、Plan、Ask 的使用時機與技巧
  • Agent 模式實戰:自動化程式碼產生與多檔案編輯
  • Plan 模式應用:複雜功能的規劃與執行
  • Ask 模式技巧:快速查詢與程式碼理解
  • Commit 自動產生:讓 AI 幫忙產生專業的 Commit Message
  • Markdown 驅動開發:用 MD 規劃,讓 Claude 實作
  • AI 功能協作:Cursor 原生 AI + Claude Code 擴充

核心概念:Cursor 的三大模式

Cursor AI 編輯器提供三種互補的工作模式,每種都有其最佳使用場景:

1. 🤖 Agent Mode - 自動化執行專家

適用場景:

  • 需要修改多個檔案的功能實作
  • 批次重構或重新命名
  • 自動化產生 boilerplate 程式碼
  • 需要 AI 主動執行任務而非僅提供建議

使用方式:

快捷鍵: Cmd+Shift+K (Mac) / Ctrl+Shift+K (Windows)

Agent 模式會:

  • ✅ 自動分析專案結構
  • ✅ 主動建議需要修改的檔案
  • ✅ 直接執行程式碼變更
  • ✅ 可以執行終端指令
  • ✅ 產生完整的實作方案

2. 📋 Plan Mode - 策略規劃大師

適用場景:

  • 複雜功能的開發規劃
  • 需要分步驟執行的任務
  • 不確定實作方向,需要先看計畫
  • 希望在執行前審查 AI 的規劃

使用方式:

在 Chat 介面選擇 "Plan" 模式

Plan 模式會:

  • ✅ 先提供詳細的執行計畫
  • ✅ 列出需要修改的檔案清單
  • ✅ 說明每個步驟的目的
  • ✅ 讓開發者決定是否執行
  • ✅ 可以逐步執行或一次全部執行

3. 💬 Ask Mode - 快速諮詢助手

適用場景:

  • 快速查詢程式碼功能
  • 理解現有程式碼邏輯
  • 取得建議但不執行變更
  • 學習和研究用途

使用方式:

快捷鍵: Cmd+L (Mac) / Ctrl+L (Windows)
或直接在 Chat 介面選擇 "Ask" 模式

Ask 模式會:

  • ✅ 僅提供資訊和建議
  • ✅ 不會修改任何檔案
  • ✅ 快速回答問題
  • ✅ 解釋程式碼邏輯

實戰範例

範例 1:用 Agent Mode 實作新功能

假設我們要在 Crew Up 專案中新增「活動收藏」功能。

步驟 1:開啟 Agent Mode

按下 Cmd+Shift+K

步驟 2:下達指令

請在 features/activity/ 中新增收藏功能:

需求:
1. 新增 favorite_activity_usecase.dart
2. 在 Activity entity 增加 isFavorite 欄位
3. 修改 ActivityProvider 支援收藏功能
4. 在 @home/presentation/widgets/activity_card_widget.dart 加入收藏按鈕

請遵循專案的 Clean Architecture 架構

Agent 會自動:

  1. 分析專案結構
  2. 建立 features/activity/domain/usecases/favorite_activity_usecase.dart
  3. 修改 features/activity/domain/entities/activity.dart
  4. 更新 features/activity/presentation/providers/activity_provider.dart
  5. 修改 features/home/presentation/widgets/activity_card_widget.dart
  6. 執行 flutter analyze 檢查錯誤

範例 2:用 Plan Mode 規劃重構(真實案例)

這是 Crew Up 專案中實際發生的重構案例。當時我們需要將 Firebase Auth 邏輯解耦,以提升程式碼的可測試性和可維護性。

步驟 1:選擇 Plan Mode

步驟 2:描述重構需求

我想重構 authentication feature,將目前的 Firebase Auth 
邏輯抽離成獨立的 datasource,讓未來可以更換其他認證方式。

請提供詳細的重構計畫。

Plan 產生了以下計畫(已成功執行):

## 重構計畫:Authentication Feature

### 目標
將 Firebase Auth 邏輯抽離,提升可測試性和可替換性

### 影響範圍
- lib/features/auth/data/datasources/
- lib/features/auth/data/repositories/
- lib/features/auth/domain/repositories/

### 執行步驟

#### Step 1: 建立 AuthRemoteDataSource 介面
- 檔案: `auth/data/datasources/auth_remote_datasource.dart`
- 定義抽象介面,包含 signIn, signUp, signOut 等方法

#### Step 2: 實作 FirebaseAuthDataSource
- 檔案: `auth/data/datasources/firebase_auth_datasource.dart`
- 實作 AuthRemoteDataSource 介面
- 將現有的 Firebase Auth 邏輯移至此處

#### Step 3: 修改 AuthRepositoryImpl
- 檔案: `auth/data/repositories/auth_repository_impl.dart`
- 依賴注入 AuthRemoteDataSource
- 移除直接使用 FirebaseAuth 的程式碼

#### Step 4: 更新 Providers
- 檔案: `auth/presentation/providers/auth_provider.dart`
- 確保使用新的抽象層

#### Step 5: 執行測試
- 執行 flutter analyze
- 執行單元測試

是否要執行此計畫?

執行結果:

這個重構計畫已成功執行。現在專案中的 auth_remote_datasource.dart 檔案成功將 Firebase Auth 邏輯封裝起來,大幅提升了程式碼的:

  • 可測試性:可以輕鬆建立 Mock DataSource 進行單元測試
  • 可維護性:認證邏輯集中管理,易於修改和擴充
  • 可替換性:未來要更換認證方式只需實作新的 DataSource
  • 架構清晰度:完全符合 Clean Architecture 的依賴規則

🔥 重點功能:Commit Message 自動產生

Cursor 可以根據程式碼變更自動產生符合 Conventional Commit 格式的 Commit Message。

使用方式

步驟 1:完成程式碼修改後,打開 Source Control

步驟 2:點擊 Commit Message 輸入框旁的 ✨ AI 按鈕

步驟 3:Cursor 會分析變更,自動產生 Commit Message

實際範例

新增功能:

變更內容:
- 新增 favorite_activity_usecase.dart
- 修改 Activity entity,增加 isFavorite 欄位
- 更新 ActivityProvider

AI 自動產生:
feat(activity): add favorite functionality

- Implement FavoriteActivityUsecase
- Add isFavorite field to Activity entity
- Update ActivityProvider to support favorites

自訂 Commit Message 規則

可以透過 .cursorrules 檔案告訴 Cursor 專案的 Commit 規範:

# .cursorrules

## Commit Message 規則
請遵循以下 Commit Message 格式:

格式:
<type>(<scope>): <subject>

<body>

Types:
- feat: 新功能
- fix: 修復 bug
- refactor: 重構
- docs: 文件更新
- style: 程式碼格式調整
- test: 測試相關
- chore: 建置或輔助工具變動

範例:
feat(auth): add social login functionality
fix(ui): resolve button alignment on iOS
refactor(data): optimize database query performance

📝 進階技巧:Markdown 驅動開發

這是 Crew Up 專案中最常用的工作流程:先用 Markdown 規劃,再讓 AI 實作

工作流程

步驟 1:用 Ask Mode 產生規劃文件

輸入:「我想新增一個通知系統,請幫我規劃這個功能的實作方案,並寫成 Markdown 文件。」

步驟 2:儲存並用 Agent Mode 實作

輸入:「請根據 @notification-system-plan.md 這份文件,實作 Phase 1: Domain Layer。」

Agent 會自動讀取 Markdown 文件,依照規劃建立檔案、實作程式碼,並執行 flutter analyze 檢查。完成 Phase 1 後,繼續執行 Phase 2、Phase 3...

為什麼這個流程有效?

清晰的規劃:Markdown 文件成為實作的藍圖
分階段執行:避免一次產生過多程式碼
易於審查:可以先審查規劃再實作
團隊合作:其他人也能理解開發思路


🔧 AI 功能協作:Cursor 原生 AI + Claude Code 擴充

在 Cursor 中同時使用兩個 AI 功能

Cursor 基於 VS Code 改造,因此可以安裝 VS Code 的擴充功能。我們可以在 Cursor 中同時使用原生 AI 功能和 Claude Code 擴充功能,讓兩個 AI 互相配合,發揮各自的優勢。

為什麼需要兩個 AI 功能?

雖然 Cursor 本身就提供了強大的 AI 功能(可以選擇不同的 AI 模型),但考量到實際使用情境:

  • 使用量限制:Cursor Pro 方案有使用量限制,頻繁使用可能達到上限
  • 成本效益:合理分配使用量,將 Cursor 的額度用在最關鍵的地方
  • 功能互補:Cursor 擅長架構規劃和多檔案操作,Claude Code 擅長即時補全和細節建議

在 Crew Up 專案開發中,我們同時訂閱了 Cursor ProClaude Pro,透過策略性地使用兩個 AI 功能,達到最佳的開發效率和成本效益。

Cursor 原生 AI 功能

  • Agent Mode:自動化執行多檔案編輯
  • Plan Mode:複雜功能的規劃與執行
  • Commit 自動產生:專業的 Git 提交訊息

Claude Code 擴充功能

擴充功能資訊:

  • 名稱: Claude Code for VS Code
  • ID: Anthropic.claude-code
  • 發行者: Anthropic
  • 版本: 2.0.10+
  • 連結: VS Marketplace

安裝方式:

1. 開啟 Cursor(或 VS Code)
2. 前往 Extensions (Cmd+Shift+X)
3. 搜尋 "Claude Code for VS Code"
4. 點擊 Install

主要功能:

  • ✅ 在 Cursor 中使用 Claude AI 進行程式碼產生
  • ✅ AI 驅動的程式碼補全和建議
  • ✅ 即時程式碼審查和優化建議
  • ✅ 與 Cursor 原生 AI 功能互補使用

協作使用場景

🎯 推薦工作流程(基於使用量管理):

  1. 階段一:架構規劃(使用 Cursor Pro 額度)

    • 使用 Plan Mode 規劃功能架構
    • 產生 Markdown 規劃文件
    • 使用 Agent Mode 建立專案骨架和目錄結構
    • 重點:這個階段最關鍵,值得使用 Cursor 的 AI 額度
  2. 階段二:細節開發(使用 Claude Code Pro)

    • 在同一個 Cursor 環境中工作
    • 切換使用 Claude Code 進行日常開發
    • 利用即時程式碼補全和建議功能
    • 節省 Cursor Pro 的使用量,用 Claude Pro 來補足
    • 重點:細節實作量大但複雜度較低,適合用 Claude Code
  3. 階段三:整合與提交(使用 Cursor Pro 額度)

    • 切回使用 Cursor Agent Mode 處理跨檔案重構
    • 自動產生專業的 Commit Message
    • 執行最終的程式碼檢查和優化
    • 重點:關鍵的整合工作,再次使用 Cursor 的優勢

💡 實際經驗分享:

在 Crew Up 專案開發中,同時訂閱 Cursor Pro 和 Claude Pro 的策略讓我們能夠:

  • 使用量管理:Cursor Pro 用在規劃和整合,Claude Code Pro 用在日常開發,有效分配使用額度
  • 成本效益最大化:兩個訂閱的總成本合理,但獲得的 AI 協助時間大幅增加
  • 無縫整合:在同一個 Cursor 環境中切換使用,不需要在不同編輯器之間跳轉
  • 策略性使用:將 Cursor 的強大功能用在最關鍵的架構決策和多檔案操作上
  • 持續開發:即使達到 Cursor 的使用量上限,仍可用 Claude Code 繼續工作

📊 使用量分配建議:

開發階段 使用工具 使用量佔比 說明
架構規劃 Cursor Pro 20% 使用 Plan Mode 和 Agent Mode
日常開發 Claude Code Pro 60% 程式碼補全、細節實作
整合提交 Cursor Pro 20% Agent Mode、Commit 產生

這種分配方式讓 Cursor Pro 的額度用在刀口上,同時保持高效的開發節奏。


💡 最佳實踐與技巧

關鍵技巧

  1. 提供清晰上下文:明確說明檔案位置、使用的元件、樣式要求等

  2. 分步驟執行:大型功能分成 Domain → Data → Presentation 三階段實作

  3. 遵循專案規範:使用 .cursorrules 和 analysis_options.yaml 確保程式碼品質

4. 使用 .cursorrules 與 analysis_options.yaml 雙重保障

在專案根目錄建立 .cursorrules 檔案告訴 Cursor 專案規範,同時搭配 analysis_options.yaml 進行強制驗證。

💡 實戰應用:Crew Up 專案採用雙重保障機制:

  1. .cursorrules - 告訴 AI 如何產生符合規範的程式碼
  2. analysis_options.yaml - 透過 Dart Analyzer 強制驗證程式碼品質

這種組合確保 AI 產生的程式碼不僅符合專案標準,還能通過自動化檢查。

.cursorrules 範例

# Crew Up 專案規範

## 開始之前必讀 @README.md
**重要**:先閱讀 README.md 瞭解完整架構設計、Global DI 機制、多國語系實作等規範。

## 核心規則
- 遵循 Feature-First Clean Architecture
- 使用 Riverpod 2.0 + Code Generation
- 所有非同步操作使用 Result<T> 包裝
- 使用絕對路徑 package:crew_up/...,禁用相對路徑
- 日誌使用 developer.log,禁用 print

analysis_options.yaml 範例(強制驗證)

include: package:flutter_lints/flutter.yaml

linter:
  rules:
    # 與 .cursorrules 對應的核心規則
    always_use_package_imports: true   # 強制 package: import
    prefer_relative_imports: false     # 禁用相對路徑
    require_trailing_commas: true      # 強制尾隨逗號
    prefer_const_constructors: true    # 優先 const
    prefer_final_locals: true          # 優先 final

analyzer:
  errors:
    prefer_relative_imports: error     # 相對路徑視為錯誤

雙重保障的優勢

層面 .cursorrules analysis_options.yaml
作用時機 AI 產生程式碼時 編譯/分析時
目的 指導 AI 產生符合規範的程式碼 強制驗證程式碼品質
覆蓋範圍 架構、命名、業務邏輯規範 語法、風格、基礎規則
執行方式 AI 理解並遵循 Dart Analyzer 自動檢查

效果:這種雙重機制讓 Crew Up 專案的程式碼品質和一致性大幅提升,AI 產生的程式碼能夠自動通過 flutter analyze 檢查。

💡 關鍵策略:在 .cursorrules 加入「開始之前必讀 @README.md」,讓 AI 每次都先理解專案架構,確保產生符合規範的程式碼。


📊 效率提升數據

在 Crew Up 專案開發過程中,使用 Cursor + Claude 的效率提升:

任務類型 傳統開發時間 使用 AI 時間 效率提升
新增 Feature 模組 2-3 小時 30-45 分鐘 70%
重構程式碼 4-6 小時 1-2 小時 60%
撰寫單元測試 1-2 小時 15-30 分鐘 75%
文件維護 1 小時 10-15 分鐘 80%
修復 Bug 30-60 分鐘 10-20 分鐘 60%

總體效率提升:約 3-5 倍

數據說明:以上數據來源於 Crew Up 專案開發過程中的實際經驗與團隊開發日誌中的時程記錄。效率提升百分比為主觀評估,實際效果可能因任務複雜度、開發者經驗、AI 提示品質等因素而有所差異,僅供參考。

雙 Pro 訂閱的成本效益

在 Crew Up 專案中,我們同時訂閱了 Cursor Pro ($20/月) 和 Claude Pro ($20/月),總成本 $40/月。

策略性使用:

  • Cursor Pro:架構規劃、跨檔案重構、Commit 產生
  • Claude Code Pro:日常程式碼補全、細節實作
  • 效益:每月節省 40-60 小時開發時間,ROI 非常高

建議:預算有限可先單訂閱,密集開發期再考慮雙訂閱。對專業或商業專案,雙訂閱的投資非常值得。

💭 結語:從工具到工作流程

透過這篇文章,我們深入探討了 Cursor 的三大模式以及實際的工作流程。關鍵重點回顧:

三大模式使用時機

模式 使用時機 特色
Agent 需要修改多個檔案的實作任務 自動執行,直接修改檔案
Plan 複雜功能需要先規劃再執行 提供計畫,審查後執行
Ask 查詢理解程式碼邏輯 僅回答問題,不修改檔案

推薦工作流程

小型功能:Agent Mode → 直接實作 → Commit

中型功能:Plan Mode → 審查計畫 → 分步執行 → Commit

大型功能(雙 AI)

Cursor Plan (規劃) → Cursor Agent (骨架) → 
Claude Code (細節 60%) → Cursor Agent (整合) → Commit

實用技巧總結

  1. 使用 .cursorrules:讓 AI 理解專案規範
  2. Markdown 驅動開發:先規劃再實作
  3. 分階段執行:避免一次產生過多程式碼
  4. 自動產生 Commit:保持 Git 歷史乾淨
  5. 策略性使用 AI:Cursor 用於規劃和整合,Claude Code 用於日常開發
  6. 管理使用量:合理分配兩個 AI 的使用時機,避免額度焦慮

最重要的心態

  • AI 是加速器,不是自動駕駛:我們仍然需要理解程式碼在做什麼
  • 審查所有 AI 產生的程式碼:確保符合專案需求和品質標準
  • 持續優化 Prompt:找出最適合專案的溝通方式
  • 建立適合的工作流程:每個專案情況不同,可以依需求調整
  • 策略性投資 AI 工具:將 AI 訂閱視為提升生產力的投資,合理評估成本效益
  • 管理使用量而非被限制:透過雙 AI 策略,避免使用量焦慮影響開發節奏

在 Crew Up 專案的開發過程中,透過 Cursor Pro + Claude Pro 的雙訂閱策略,以及合理的使用量管理,讓我們的效率提升了 3-5 倍,同時保持了程式碼品質和穩定的開發節奏。希望這篇實戰指南能幫助大家也建立起高效的 AI 合作開發流程!

下一步

明天,我們將進一步探討 Cursor 進階功能與 Figma MCP 整合,學習如何結合 AI 驅動的開發工具和設計自動化,打造完整的設計開發一體化流程。我們會分享 Cursor 獨有的 Composer Mode、@ 符號系統,以及如何與 Figma MCP 完美整合。

期待與您在 Day 28 相見!


📋 相關資源

Cursor & AI 工具

📝 專案資訊

  • 專案名稱: Crew Up!
  • 開發日誌: Day 27 - Cursor + Claude 實戰指南:從 Agent 到 Commit 的完整開發流程
  • 文章日期: 2025-10-11
  • 技術棧: Cursor AI, Claude Code, Agent Mode, Plan Mode, Ask Mode, Commit 自動產生, Markdown 驅動開發, AI 功能協作

上一篇
Day 26 - iOS 部署成功:從 App Store Connect API Keys 到完整自動化流程
下一篇
Day 28 - Cursor 進階功能 + Figma MCP:解決設計與開發的鴻溝
系列文
我的 Flutter 進化論:30 天打造「Crew Up!」的架構之旅30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言